#include <iostream>

using std::cout;
using std::endl;

class Base
{
public:
    Base()
    {
        cout << "Base()" << endl;
    }
};

class Derived
: public Base
{
public:
    Derived(long derived)
    : Base()
    , _derived(derived)
    {
        cout << "Derived(long)" << endl;
    }
private:
    long _derived;
};

int main(int argc, char *argv[])
{
    //错误的说法：创建派生类对象的时候，先调用基类的构造函数
    //然后调用派生类的构造函数
    //
    //正确说法：创建派生类的对象的时候，会调用派生类的构造函数，
    //但是因为有继承，会吸收基类中的数据成员，为了完成从基类吸收
    //的数据成员的初始化，会借用基类的构造函数进行，然后再执行
    //派生类的构造函数的函数体
    Derived d(10);
    return 0;
}

